AWS CloudFormation の基本と Guard の使い方を学べるワークショップ「Using AWS CloudFormation to deploy infrastructure with speed & safety」に参加しました #AWSreInvent #DOP306

AWS CloudFormation の基本と Guard の使い方を学べるワークショップ「Using AWS CloudFormation to deploy infrastructure with speed & safety」に参加しました #AWSreInvent #DOP306

Clock Icon2024.12.05

AWS re:Invent 2024 において、AWS CloudFormation の基本と Guard の使い方を学べるワークショップ「Configuring Amazon S3 security settings and access controls」Using AWS CloudFormation to deploy infrastructure with speed & safety」に参加してきました。

内容としては、基本的な CloudFromation の使い方に加えて、Amazon Q Developer でテンプレートを作成するプロンプト例がありました。さらに、おまけで CloudFormation Guard のハンズオンもあり、Guard 部分が気になって参加しました。

ワークショップの概要

タイトル

  • DOP306 | Using AWS CloudFormation to deploy infrastructure with speed & safety

概要(re:Invent 2024 イベントサイトより抜粋)

In this workshop, learn how to develop and test AWS CloudFormation templates. Create CloudFormation templates to deploy and manage resources, and learn about CloudFormation language features that allow you to reuse and extend templates for many scenarios. Explore testing tools, including cfn-lint and CloudFormation Guard, that can help you validate your CloudFormation templates. You must bring your laptop to participate.

Spekaers

  • Bhavani Kanneganti, Principal Cloud Support Engineer, Amazon Web Services
  • Kevin DeJong, Sr. Open Source BDM - IaC, AWS

LEVEL

  • 300 – Advanced

ワークショップの流れ

ワークショップの流れは、始めに CloudFormation の概要から始まり、開発に使えるツールの紹介や IaC Generator や CloudFormation Guard の説明に続きました。

  • CloudFormation の概要
  • Local development tool
    • エディタ の紹介
    • cfn-lint の紹介
    • Amazon Q developer の紹介
    • AWS Application Conposer の紹介
  • Template generation
    • IaC generator の説明
  • Developerment Strategy & Safety
    • AWS CloudFormation Guard の説明
  • ワークショップ(ハンズオン)

ワークショップ(ハンズオン)の内容

ワークショップの内容は、自分で AWS アカウントを用意して試せるようにセルフラボも用意されていました。

https://catalog.us-east-1.prod.workshops.aws/workshops/37bb45e2-a385-4c09-a376-39399688a445/en-US

ワークショップの主要な目次です

  • Template generation and resource import (IaC Generator を使ったリソースインポート)
  • Template editing (Parameter, Resource などのテンプレートの各項目の説明付き)
  • Building a containerized application (コンテナアプリを CloudFormation でデプロイ)
  • Updating an application
  • (Bonus) Deployment safety
    • AWS CloudFormation Guard
    • CloudFormation change sets (変更セット)
    • CloudFormation Hooks

個人的に良かったのは次の 3 点です。

  • IaC Generator のハンズオン
  • AWS CloudFormation Guard のハンズオン
  • 全体を通して、Amazon Q Developer を用いた作成指示のプロンプト例の記載

IaC Generator はこれまでは使ったことがなかったのですが、既存リソースをインポートして、さらにリソースを更新するまでの流れを学べます。まだ情報が少ない機能であったため、ハンズオンで流れを学べる点がよかったです。

同様に、CloudFormation Guard についてもこれまでは独学で学ぶことが多かったため、サンプルコード付きで学べるのはとても参考になりました。Config ルールの作成の際にも応用できそうです。例えば、次のようなサンプルが掲載されています。このサンプルは ECS のタスク定義において、CPU とメモリが特定の範囲内であることを確認します。

# Define the Task Definition resource
let task_definitions = Resources.*[Type == "AWS::ECS::TaskDefinition"]

# Rule to validate Task Definition properties
rule task_definition when %task_definitions !empty {
    %task_definitions.Properties {
        # CPU constraints
        Cpu >= 256
        Cpu <= 4096

        # Memory constraints
        Memory >= 512
        Memory <= 30720
    }
}

最後は、Amazon Q Developer を利用したテンプレート作成のプロンプト例も学べることです。ワークショップの一部の手順では、手動で作成・修正するテンプレートと同じ目的のテンプレートを生成 AI を利用して作成するパターンも用意されており、理解の促進に役立ちます。

例えば、AWS::ECS::TaskDefinition における NetworkMode が awsvpc に設定され、Cpu が 256 ユニット Memory が 512 ユニットに設定されていることを検証する task_definition ルールを作成したい場合に、生成 AI に依頼するプロンプト例として次の文章がヒントとして用意されています。

Create a cfn-guard rule named "task_definition" to validate an AWS ECS task definition. Ensure the rule checks that the Network Mode is set to "awsvpc", the CPU is allocated 256 units, and the Memory is set to 512 units.

以上が個人的に参加してよかったと思えるポイントでした。

さいごに

AWS CloudFromation Guard の理解を深めるために、AWS CloudFromation のワークショップに参加してみました。Guard 以外にも、IaC Generator や生成 AI を利用したテンプレートの作成方法も知ることができ、今後のためになるワークショップでした。Guard はおまけ (Bonus) の課題としており、他の問題とは独立して実施することもできます。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.